草庐IT

c++ - std::thread 有多标准?

全部标签

c - 为什么这个 C 程序在 windows 上崩溃而在 linux 上运行正常?

我写了一个程序来求谐波数(then-thharmonicnumberisthesumofthereciprocalsofthefirstnnaturalnumbers)数字序列。我的程序将其输入作为命令行参数并以表格格式打印谐波数。作为一个例子,它是这样工作的:C:\Users\EDDiE\c>har10305102.9289682539682538153.3182289932289937203.5977396571436819253.8159581777535068303.994987130920390610(argv[1])=startingnumber,30(argv[2])=e

c++ - 将 unicode(带 BOM)字符串转换为 ASCII std::string

我有一个带有初始BOM的unicode字符串(一系列字节)(它通常是UTF-16little-endian)我需要将其转换为ASCIIstd::string。我尝试使用thissolution但它不适用于visualstudio2015.我怎样才能转换那一系列的字节?目标系统将是Windows。 最佳答案 这应该适用于visualstudio。此函数永远不应内联,因为它会在堆栈上分配临时可变大小的缓冲区。std::stringtoMultibyte(constwchar_t*src,UINTcodepage=CP_ACP){intw

C fopen() - 绝对路径可能存在的问题

这个问题在这里已经有了答案:Returningastringfromfunction(3个答案)关闭7年前。我目前在Windows10下使用Code::Blocks13.12(编译器:GNUGCC)。我正在尝试打开文件并加载其内容,但fopen给我带来了麻烦。'input.txt'与我的可执行文件位于同一目录中。我已经检查了权限。获取路径的函数:char*getFileName(){char*fileName;/*thepathofthe.txtfile*/charpath[MAX_PATH];/*getthepathoftheexecutable*/GetModuleFileName

c++ - 在 Windows 上等待进程或标准输出

我正在使用CreateProcess启动一个进程,我想等待该进程完成,或者等待任何内容写入标准输出,该标准输出正在通过匿名管道进行传输。下面的代码不起作用,因为WaitForMultipleObjects不断返回stdout管道,即使没有任何内容可读。有没有办法等待管道?我等不及要阅读了,因为如果流程完成,我还需要继续。我也不能等到过程完成而不检查管道,因为它可能会溢出。有什么想法吗?if(::CreateProcess((!application_name.empty()?application_name.c_str():NULL),//Application/Executablen

c - Windows 互斥对象和信号量

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。ImprovethisquestionWindows互斥对象是否可以替换为二进制信号量,或者Windows互斥对象是否具有我错过的某些特定功能?

C++ - 如何获取正在运行的进程的 .exe 路径作为 std::string?

我有一个程序需要将文件放在与已运行的Windows进程相同的目录中。如何将此目录检索为std::string以便我可以在正确的位置写入?我知道这不是什么大问题,但我确实用Google搜索了很多次,但我找不到任何与解决方案类似的东西。编辑:我正在使用Code::Blocks,因此最好是不特定于单个IDE功能的解决方案。 最佳答案 如果您为Windows开发程序,您可以使用GetModuleFilename()API调用,然后从整个路径中删除文件名部分。这是示例:#include"stdafx.h"#include#include#in

在 Linux 上使用 MinGW 为 Windows 编译 Gnu11

我有一个C程序;它使用gcc-std=gnu11iter.c-oiter进行编译和链接,因为我正在使用一些GNUstring.h扩展,例如strndup,strnlen和strsep。我想在UbuntuLinux上使用包i686-w64-mingw32-gcc为Windows编译这个程序。$i686-w64-mingw32-gcc-std=gnu11iter.c-oiter32.exeInfileincludedfromiter.c:1:0:iter.h:Infunction‘str_chomp’:iter.h:166:15:warning:implicitdeclarationoff

c - 在不离开内核空间的情况下实现 "tee"

在Linux中,tee命令将数据从stdin复制到stdout和文件;通过利用tee和splice系统调用,可以在数据永远不会离开内核空间的情况下实现此功能。在Windows上实现tee命令并且数据永远不会离开内核空间需要哪些函数?虽然tee命令有一个简单的实现,包括read、open和write将数据复制到用户空间,我特别感兴趣的是学习如何在数据不离开内核空间的情况下分割文件流。 最佳答案 这个问题的前提是错误的。tee命令不依赖于tee()或splice()系统调用,也不是零拷贝;它基本上实现为:openfileforwriti

windows - 批处理脚本中的非标准文件描述符

所以我有(我认为是)一个有趣的问题。在工作中,我使用专有命令行实用程序测试/配置我们制作的以太网设备。基本上,您打开命令提示符,在相应目录中键入ethutil,然后它通过JTAG访问芯片。在此实用程序中,您可以运行“脚本”,这些脚本只是填充了适当命令的文本文件。它们是这样运行的:-->runtest_script.txt然后这将吐出对脚本中所有命令的反馈。我已经开始通过使用批处理文件将命令管道化到实用程序来自动执行大量寄存器写入/读取操作,如下所示:typeruntest_script.txt|ethutil>nulnul只是为了抑制我的批处理读数中的所有输出。这工作得很好,但我总是收

c - 从 C 打开/运行另一个程序,然后关闭该程序

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion如何从C执行/打开/运行另一个程序,而不是阻止它,但让它同时运行。然后我想做一些像服务器/客户端这样的测试,然后如果已经完成我只想杀死/关闭这个程序。我读过system()orexecv()但第一个似乎在等待结果,第二个似乎只能在Linux上工作?在最好的情况下,我希望有跨平台或最小的MacOS/Windows/Linux(Ubuntu)工作解决方案。当我不再需要它时,我还需要关闭这个以前打开的程序。